[Looker]ユーザー属性を用いたリモートリポジトリへのHTTPS認証を試してみた #looker
Lookerを使用する際は、基本的に何かしらのGitのホスティングサービス上のリモートリポジトリを設定する必要があります。Lookerで使用できるものだと、Githubが有名かと思います。
この設定を行う時には、HTTPS認証やSSH認証などの方法があります。 詳しくは下記の公式Docに書いてあります。
この公式Docに記載されているHTTPS認証の「Multiple Account HTTPS Authentication with User Attributes」について、挙動がどうなるのかイメージがつかなかったので試してみました。
その検証内容を本ブログにてまとめます。
実装手順
1. リモートリポジトリの設定
使用先のリモートリポジトリで必要なユーザー分「Invit a collaborator」を行います。この認証方法ではGithubのアカウント情報を対象のリモートリポジトリの認証に用いるため、事前に権限を与えておく必要があるためです。
2. ユーザー属性の作成
この認証方法では、ユーザー属性(User attribute)を認証に用いるため、各ユーザーごとにGithubアカウント情報を格納するためのユーザー属性を作成します。
- ユーザーネーム用
ここでは、User Access
を「Edit」にすることで、各ユーザーが自身のGithubアカウント情報を入れるようにしています。
- パスワード用
User AccessをEditにすることはユーザーネーム用と同じなのですが、Hide Values
を「Yes」にすることで、パスワードの内容がそのまま明記されず伏せ字表記となります。
Hide Values
を「Yes」にすると、Domain Allowlist
の設定も表示されるようになります。
この中には、対象となるリモートリポジトリのURLを入力します。
こちらはワイルドカードも使用できますので、あるGithubアカウント内の全リポジトリを対象としたい場合は「https://github.com/<Githubアカウント名>/*
」としてあげるのがよいと思います。
3. ユーザー属性に値を入力
作成した2つのユーザー属性に対して、Githubのアカウント名とそのパスワードを入れてあげます。 この認証方法の場合ユーザーごとに情報の入力が必要なので、基本的には各ユーザーごとにGithubアカウントを設定する必要があります。
4. 対象のLookerプロジェクトでのGit設定
Lookerのプロジェクトに対してリモートリポジトリを設定する時(Configure Git)に下図の画面が出てくるので、ユーザー属性を認証に使用するように設定を行います。
この設定のポイントとしては、大きく3点あります。
1つ目は、一番上の選択肢はUse user attributes for username and password
を選択することです。
これを選択しないと、これまでの作業を実施した意味がなくなってしまうので、注意しましょう。
2つ目は、Production Credentials
です。
こちらは、LookerのProductionモードにリモートリポジトリの情報をプルする際に使用されるGithubアカウント情報を入れる必要があります。
対象のリモートリポジトリへの読み取り権限があるGithubアカウント情報であればOKです。
3つ目は、Developent Mode Credentials
です。
こちらには、先程作成したユーザー属性をドロップダウンリストから選択してあげればOKです。
5. 結果確認
作成したユーザー属性欄が空白だったり、対象のリモートリポジトリへのアクセス権限がない場合には、下図のようにエラーが表示されるようになります。
ちなみに、対象のリモートリポジトリへのアクセス権限があるGithubアカウントをユーザー属性に指定している場合は、通常通りMerge&Deployまで出来るようになっています。
どういったときに使えるか?
では、この認証方法がどういったときに使用できるのか?を考えてみたいと思います。
HTTPS認証のもう一つの方法である「Single Account HTTPS Authentication」と比較して考えてみると、大きな違いとしては「対象のリモートリポジトリに対して、権限を持つGithubアカウントを所持していないと、productionモードへのデプロイが出来ない」ことだと思います。
そのため、以下のような場面でこの機能は使えるのかな、と感じています。
- デプロイ等の開発権限管理をGitホスティングサービスのアカウントベースで行いたい時
-
対象のプロジェクトに対して、コードの開発作業は行ってほしいが、デプロイは別担当者にお願いしたい時
最後に
いかがでしたでしょうか! 使い所が難しい機能かもしれないですが、こんな方法もあることを頭の片隅に入れておくと、いざというときに使えるかもしれません。
ぜひ、活用できそうな場面があれば検討してみてください。